package com.bsg.upm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bsg.upm.entity.BackupStorageEntity;

/**
 * 备份存储接口
 * 
 * @author HCK
 *
 */
public interface BackupStorageDao extends CrudDao<BackupStorageEntity> {

	/**
	 * 获取指定条件下的所有备份存储名称
	 * 
	 * @param siteId
	 *            站点编码
	 * @param enabled
	 *            可用
	 * @return 备份存储集合
	 */
	List<BackupStorageEntity> listName(@Param("siteId") String siteId, @Param("enabled") Boolean enabled);

	/**
	 * 获取指定站点的备份存储个数
	 * 
	 * @param siteId
	 *            站点编码
	 * @return 备份存储条数
	 */
	int countBySiteId(String siteId);

	/**
	 * 获取指定站点和备份存储名称的备份存储个数
	 * 
	 * @param siteId
	 *            站点编码
	 * @param name
	 *            备份存储名称
	 * @return 备份存储条数
	 */
	int countBySiteIdAndName(@Param("siteId") String siteId, @Param("name") String name);

	/**
	 * 根据地址、源目录、挂载目录和站点编码获取备份存储个数
	 * 
	 * @param siteId
	 *            站点编码
	 * @param ip
	 *            地址
	 * @param dir
	 *            源目录
	 * @param mountDir
	 *            挂载目录
	 * @return 备份存储条数
	 */
	int countBySiteIdAndIpAndDirAndMountDir(@Param("siteId") String siteId, @Param("ip") String ip,
			@Param("dir") String dir, @Param("mountDir") String mountDir);

	/**
	 * 更新备份存储可用状态
	 * 
	 * @param backupStorage
	 *            备份存储对象
	 * @return 更新数据条数
	 */
	int updateEnabled(BackupStorageEntity backupStorage);
}
